<?php

namespace app\user\controllers;

use mini\{Session, Validator};

class Login
{
    /**
     * 显示登录表单
     */
    public function index()
    {
        // 如果已有登录信息，则直接返回之前页面
        if (session('user_id')) {
            go_back();
        }

        $data = [
            'page_title' => '登录',
        ];

        view('user/login', $data);
    }

    /**
     * 检查表单数据，提交登录
     */
    public function submit()
    {
        if (REQUEST_TYPE !== 'post') {
            return json('请求方法不正确', 'error');
        }

        // 获取并检测验证码
        $captcha = post('captcha');
        if (strtolower($captcha) !== strtolower(session('captcha'))) {
            return json('验证码错误');
        }

        // 获取表单数据
        $data = [
            'username' => post('username'),
            'password' => post('password')
        ];
        // 验证规则
        $rules  = [
            'username' => ['required', '3,32',  '姓名应为 3-32 个字符'],
            'password' => ['required', '6,30', '密码应为 6 个字符及以上'],
        ];
        // 验证
        $validate = new Validator($data, $rules, true);
        // 验证结果
        $result = $validate->check();
        if (!$result) {
            return json($validate->error);
        }

        // 实例化用户模型
        $userModel = model('user');

        // 用户不存在
        if (empty($userModel->findByUsername($data['username']))) {
            return json('用户名不存在');
        }

        // 用户名存在，比对密码
        $user = $userModel->login($data['username'], $data['password']);

        if (!$user) {
            return json('用户名或密码错误');
        }

        // 登录成功，设置 session
        Session::set([
            'user_id'  => $user->id,
            'username' => $user->username,
        ]);

        return json('登录成功', 'success');
    }
}